package com.xique.common.core.web.domain;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;

/**
 * 分页返回结果
 *
 * @author wld
 * @date 2022/3/11 15:09
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PageResult {

    /**
     * 当前页
     */
    private Integer pageNum;

    /**
     * 每页数量
     */
    private Integer pageSize;

    /**
     * 总页数
     */
    private Long totalPages;

    /**
     * 总条数
     */
    private Long totalSize;

    /**
     * 数据列表
     */
    private List<?> list;

    /**
     * 订单笔数
     */
    private Long num;

    /**
     * 成功笔数
     */
    private Long successNum;

    /**
     * 订单总金额 （分）
     */
    private BigDecimal totalPrice;

    /**
     * 支付总金额 （分）
     */
    private BigDecimal totalPayPrice;

    /**
     * 总手续费 （分）
     */
    private BigDecimal totalServiceCharge;

    /**
     * 应结算总金额 （分）
     */
    private BigDecimal totalSettlementAmount;

    /**
     * 打款总金额 （分）
     */
    private BigDecimal totalPaymentAmount;

    /**
     * 退款总金额（分）
     */
    private BigDecimal totalRefundAmount;

    private List<Object> nextSearchAfter;

    public static PageResult getEmptyInstance(int pageNum, int pageSize) {
        return PageResult.builder()
                .pageNum(pageNum)
                .pageSize(pageSize)
                .totalPages(0L)
                .totalSize(0L)
                .list(Collections.emptyList())
                .num(0L)
                .successNum(0L)
                .totalPrice(BigDecimal.ZERO)
                .totalPayPrice(BigDecimal.ZERO)
                .totalServiceCharge(BigDecimal.ZERO)
                .totalSettlementAmount(BigDecimal.ZERO)
                .totalPaymentAmount(BigDecimal.ZERO)
                .totalRefundAmount(BigDecimal.ZERO)
                .nextSearchAfter(Collections.emptyList())
                .build();
    }

}
